home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1997 February / macformat-047.iso / Shareware Plus / Developers / DLOGManager 1.02 / Source Code / CGestisciElOrd_v03.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-10-01  |  7.2 KB  |  291 lines  |  [TEXT/KAHL]

  1. /*** File: "GestisciElOrd_v00.h"
  2. *
  3. *    Versione 00. Del 22-09-94.
  4. *    Scritto da Cadili Francesco.
  5. *
  6. *    Gestisce un elenco di dati.
  7. *
  8. ****************************************************************/
  9. #ifndef __GestisciElOrd__
  10. #define __GestisciElOrd__
  11. #ifndef __Cstring_P__
  12. #include "Cstring_P_v32.h"
  13. #endif
  14. #ifndef __CGestisciTE__
  15. #include "CGestisciTE_v02.h"
  16. #endif
  17. #include <TextEdit.h>
  18. #include <Dialogs.h>
  19. #include <QuickDraw.h>
  20. #include <Controls.h>
  21.  
  22. class CdataDescRec
  23. {
  24.     public:
  25.         short            fontNum;
  26.         short            fontSize;
  27.         short            dim;
  28.         Str255            title;
  29.         short            fontTitle;
  30.         short            sizeTitle;
  31.         Boolean         canModify;
  32.         CGestisci_TE    *TEH;
  33.  
  34.         /*** constructor
  35.          *
  36.          ****/
  37.         CdataDescRec(void);
  38.         
  39.         /*** destructor
  40.          *
  41.          ****/
  42.         ~CdataDescRec(void);
  43. };
  44.  
  45. class CGestisciElOrd
  46. {
  47.     protected:
  48.         DialogPtr             theDialog;        // il puntatore al dialog che contiene i campi;
  49.         RGBColor             backGround;        // il colore di BackGround;
  50.         CGestisci_TE         *numerazione;    // il campo usato per la numerazione;
  51.         short                 linee;            // il numero di linee del campo textEdit;
  52.         Boolean             hasNumberField;    // se ha il campo numerazione;
  53.         CGestisci_TE        *editLine;        // usato localmente per modificare i dati;
  54.         short                 fieldNumWidth;    // l'ampiezza del campo "numerazione"
  55.         short                 actNumSet;        // il numero attuale cambiato
  56.         short                 **num;            // il campo che contiene la numerazione
  57.         short                 maxNumData;        // la dimensione dell'array num. 
  58.         short                nField;            // descrittore dei campi elenco
  59.         CGestisci_TE        *scrollTEH;
  60.         CdataDescRec        ***descField;        
  61.  
  62.         /*** "InitData(textFont, textHeight)"
  63.          *
  64.          *    Inizializza i dati relativi al DLOG.
  65.          *    (Presuppone che i primi dati della struttura globale
  66.          *    siano presenti).
  67.          *
  68.          *    Par INPUT:    'textFont' la fonte del campo text edit,
  69.          *                'textHeight' l'altezza del campo text edit.
  70.          *    Val OUTPUT:    TRUE se tutto ok, FALSE altrimenti.
  71.          *
  72.          ****/
  73.         int InitData(short fontNum, short fontSize, Boolean hasScroll);
  74.  
  75.          /*** inizializzaNumerazione()
  76.          *
  77.         *    inizializza la numerazione.
  78.         *    per ora presuppone che il campo text edit sia vuoto
  79.          *    (la prima parte dell'array costituisce la mascera per la
  80.          *    seconda parte) !!!
  81.          *
  82.          ***/
  83.         Boolean inizializzaNumerazione(void);
  84.  
  85.         /*** azzeraNumerazione()
  86.          *
  87.          *    Azzera l'array della numerazione.
  88.          *
  89.          ***/
  90.         void azzeraNumerazione(void);
  91.  
  92.         /*** sostituisciNumerazione()
  93.          *
  94.          *    Presuppone che il campo textEdit sia vuoto.
  95.          *
  96.          ***/
  97.         void sostituisciNumerazione(void);
  98.  
  99.         /*** scambiaValori(numSet)
  100.          *
  101.          *    Presuppone che il campo textEdit sia vuoto.
  102.          *
  103.          ***/
  104.         void scambiaValori(void);
  105.  
  106.         /*** scambiaValArray(array, pos1, pos2);
  107.          *
  108.          *    Scambia i valori contenuti nell'array nelle posizioni "pos1" e "pos2".
  109.          *
  110.          ***/
  111.         void scambiaValArray(short *array, short pos1, short pos2);
  112.  
  113.         /*** Riscrivi(num, pos)
  114.          *
  115.          *    Riscrive i dati nella posizione "num".
  116.          *
  117.          ***/
  118.         void Riscrivi(short *num, short pos);
  119.  
  120.         /*** insertEl(num)
  121.          *
  122.          *    Riscrive i dati nella posizione "num".
  123.          *
  124.          ***/
  125.         void insertEl(short pos);
  126.  
  127.         /*** CancellaEl(num)
  128.          *
  129.          *    Riscrive i dati nella posizione "num".
  130.          *
  131.          ***/
  132.         void CancellaEl(short pos);
  133.  
  134.         /*** modifyData()
  135.          *
  136.          *    Permette la modifica dei dati
  137.          *
  138.          ***/
  139.         void modifyData(EventRecord *theEvent);
  140.  
  141.         /*** sostituisciDato()
  142.          *
  143.          *    Permette la modifica dei dati
  144.          *
  145.          ***/
  146.         Boolean sostituisciDato(void);
  147.  
  148.         /*** inserisce un carattere
  149.          *
  150.          ****/
  151.         void insertChar(EventRecord *theEvent);
  152.  
  153.         /*** "showActSel()"
  154.          *
  155.          *    mostra la selezione attuale
  156.          *
  157.          ***/
  158.         void showActSel(void);
  159.  
  160.     public:
  161.         short                 TEitem;            // il numero di item del User Item relativo al Text Edit;
  162.         Boolean             canModify;        // se può modificare i dati;
  163.         short                 titoloScelto;    // il titolo scelto.
  164.  
  165.         /*** costructor
  166.          *
  167.          ***/
  168.         CGestisciElOrd(void);
  169.         
  170.         /*** costructor
  171.          *
  172.          ***/
  173.         ~CGestisciElOrd(void);
  174.  
  175.         /*** result = Alloca(theDialog, TEitem, &backGround, nField, descField, fontNum, sizeNum, canModify)
  176.          *
  177.          *    Alloca la struttura dati "gestElOrdRec" nello Heap.
  178.          *
  179.          *    Par INPUT:    'theDialog' il puntatore al dialog,
  180.          *                'TEitem' il numero di item del campo text edit,
  181.          *                'CTRLitem' il numero di item del campo di scroll,
  182.          *                '*backGround' lo sfondo del campo text edit,
  183.          *                'textFont' la fonte del campo text edit,
  184.          *                'textHeight' l'altezza del campo text edit.
  185.          *                'maxNumData' il numero massimo di campi ammassi.
  186.          *    Val OUTPUT:    il puntatore alla struttura dati se tutto ok, NULL altrimenti.
  187.          *
  188.          ***/
  189.         Boolean IGestisciElOrd( DialogPtr theDialog, short TEitem,
  190.                                 RGBColor *backGround, short fontNum, 
  191.                                 short fontSize, short nField,
  192.                                 CdataDescRec ***descField, Boolean canModify, 
  193.                                 Boolean hasScroll, Boolean hasNumberField);
  194.  
  195.         /*** Dispose(&elOrdHdl)
  196.          *
  197.          *    Dealloca la struttura dati "dataHdl".
  198.          *    Nota:    da chiamare prima della deallocazione del
  199.          *            dialog (**elOrdHdl)->theDialog.
  200.          *
  201.          *    Par INPUT:    '*elOrdHdl' l' Handle del dialog.
  202.          *    Val OUTPUT:    'elOrdHdl' è posto a NULL.
  203.          ****/
  204.         void Dispose(void);
  205.  
  206.         /*** "listaFont(elOrdHdl)"
  207.         *
  208.         *    Gestisce l'updateEvt nei campi definiti come "user"
  209.         *
  210.         *    Par INPUT:    'elOrdHdl' il puntatore alla struttura dati attuale,
  211.         *
  212.         ************************************************************************/
  213.         void updateEvt(void);
  214.  
  215.         /*** "disabilita(elOrdHdl, &theEvent)"
  216.         *
  217.         *    Gestisce i click nella scroll Bar.
  218.         *
  219.         *    Non tratta il doppio click e lo scroll mentre il bottone é abbassato.
  220.         *
  221.         *****************************************************************************/
  222.         void disabilita();
  223.  
  224.         /*** "abilita(elOrdHdl, &theEvent)"
  225.         *
  226.         *    Gestisce i click nella scroll Bar.
  227.         *
  228.         *    Non tratta il doppio click e lo scroll mentre il bottone é abbassato.
  229.         *
  230.         *    Par INPUT:    'elOrdHdl' il puntatore alla struttura dati attuale,
  231.         *                'theEvent' il puntatore al record dell'evento attuale;
  232.         ***/
  233.         void abilita(void);
  234.  
  235.         /*** "KeyDown(elOrdHdl, &theEvent)"
  236.         *
  237.         *    Gestisce i click nella scroll Bar.
  238.         *
  239.         *    Non tratta il doppio click e lo scroll mentre il bottone é abbassato.
  240.         *
  241.         *    Par INPUT:    'elOrdHdl' il puntatore alla struttura dati attuale,
  242.         *                'theEvent' il puntatore al record dell'evento attuale;
  243.         ***/
  244.         Boolean KeyDown(EventRecord *theEvent);
  245.  
  246.         /*** "ClickInElOrd(elOrdHdl, &theEvent)"
  247.          *
  248.          *    Gestisce i "mouse Event" nel campo "ElOrd".
  249.          *    L' attivazione/disabilitazione del bottone ok
  250.          *    è gestita da questa procedura.
  251.          *
  252.          *    Par INPUT:    'elOrdHdl' il puntatore alla struttura dati attuale,
  253.          *                'theEvent' il puntatore al record dell'evento attuale.
  254.          ***/
  255.         void gestClick(EventRecord *theEvent);
  256.  
  257.         /*** "TEidle(elOrdHdl)"
  258.         *
  259.         *    Gestisce i click nella scroll Bar.
  260.         *
  261.         *    Gestisce il blink sul campo selezionato.
  262.         *
  263.         *    Par INPUT:    'elOrdHdl' il puntatore alla struttura dati attuale,
  264.         ***/
  265.         void TEidle(void);
  266.  
  267.         /****
  268.          *    sostituisciTesto_gestDLOG(elOrdHdl, str, len);
  269.          *
  270.          *    inserisce del testo nel textEdit corrente
  271.          *
  272.          ***/
  273.         Boolean sostituisciTesto(short nEl, Cstring_P *dataStr);
  274.  
  275.         /****
  276.          *    cancellaTesto(elOrdHdl);
  277.          *
  278.          *    inserisce del testo nel textEdit corrente
  279.          *
  280.          ***/
  281.         Boolean cancellaTesto(void);
  282.  
  283.         /****
  284.          *    aggiungiTesto(elOrdHdl, str, len);
  285.          *
  286.          *    inserisce del testo nel textEdit corrente
  287.          *
  288.          ***/
  289.         Boolean aggiungiTesto(short nEl, Cstring_P *dataStr);
  290. };
  291. #endif